1. Introdução

No decorrer deste curso, os programas R/RStudio serão usados como uma ferramenta para auxiliar na aplicação de métodos e técnicas de análise da informação, uma etapa fundamental em pesquisas que buscam um aumento da compreensão de questões no nosso campo de interesse.

É importante ressaltar o uso do R/RStudio não pode ser dissociado do processo de pesquisa, que envolve a observação, formulação de hipóteses, coleta de dados e análise de dados, sendo este o foco deste curso.

1.1. O que é o R?

O R é um programa estatístico muito usado na análise e visualização de dados, onde a interação é feita através de uma sintaxe (uma linguagem de programação).

Algumas de suas vantagens são:

  • É gratuito, de distribuição livre e de código aberto
  • Possui uma curva de aprendizado bastante amigável, sendo muito fácil de se aprender (se comparado a outros programas estatísticos)
  • Todas as rotinas criadas em R são transparentes, seguindo os princípios da ciência aberta
  • Existe uma enorme quantidade de pacotes gratuitos, para diversos tipos de aplicações
  • Existe uma enorme quantidade de ajuda e tutoriais disponíveis gratuitamente na internet
  • É amplamente utilizado pela comunidade acadêmica e mercado

Um script refere-se à uma rotina de análise ou visualização de dados que:

  • É um texto
  • É transparente
  • É reprodutível
  • Pode ser compartilhado
  • Pode ser colaborativo

1.2. O que é o RStudio?

O RStudio é o ambiente de desenvolvimento integrado mais usado para desenvolver análise de dados com a linguagem R. Além de permitir escrever códigos em scripts e rodar códigos no console, é possível visualizar gráficos e mapas (estáticos ou dinâmicos), gerenciar pacotes, navegar pelos arquivos, dentre outras funções.

1.3. Transferência e instalação do R e RStudio

Primeiro, é necessário instalar o R. Você pode transferir a última versão neste endereço. Após a transferência, siga o passo a passo para a instalação (Fig. 1).

Fig. 1 - Instalação do R

Se a instalação do R foi bem sucedida, você pode transferir o RStudio Desktop (versão gratuita) neste endereço e seguir o passo a passo para a instalação (Fig. 2).

Fig. 2 - Instalação do RStudio

1.4. Interface RStudio

A interface do RStudio deve exibir, na maior parte do tempo, quatro painéis (Fig. 3):

1. Source: É a sua área de trabalho principal. Pode exibir várias janelas, com scripts, tabelas e outros conteúdos. Ao clicar em Run ou apertar os comandos Ctrl + Enter, dentro de um script, o conteúdo selecionado vai rodar e aparecer no Console.

2. Console: Todo código que você rodar de um script será enviado ao Console, onde os resultados e avisos aparecerão. Você também pode escrever uma linha de código diretamente no Console.

3. Environment/History: * Environment: É o ambiente de trabalho ativo. Todos os objetos e funções definidos devem aparecer no Environment. * History: Exibe o histórico de cada linha de código rodada, que podem ser enviadas à Source ou Console.

4. Files/Plots/Packages/Help: * Files: Permite navegar pelos diretórios de trabalho. * Plots: Exibe os gráficos, mapas e outras figuras produzidas. * Packages: Permite o gerenciamento dos pacotes ativos e instalados. * Help: Contém tutoriais e exibe ajuda, quando solicitada.

Fig. 3 - Interface RStudio

1.5. Como buscar ajuda

No decorrer das aulas práticas, você pode precisar de ajuda para entender uma função. Não se preocupe: ter dúvidas faz parte do processo de aprendizado. Na verdade, o R/RStudio conta com uma ferramenta que pode te auxiliar: é possível acessar tutoriais produzidos pelo R/RStudio em Help.

Help também exibe a documentação de cada função, que pode ser acessada com o uso das funções help() ou ?.

Para acessar a documentação da função média, por exemplo, você pode digitar:

help(mean)
## starting httpd help server ... done

Ou:

?mean

Que deve exibir o seguinte conteúdo em Help (Fig. 4):

  • Descrição: Função genérica para a média aritmética (aparada).
  • Uso: mean(x, …)
  • Argumentos:
    • x Um objeto R. Atualmente existem métodos para vetores numéricos / lógicos e objetos de data, hora e intervalo de tempo. Vetores complexos são permitidos apenas para trim = 0.
    • trim a fração (0 a 0,5) de observações a serem aparadas de cada extremidade de x antes que a média seja calculada. Os valores de corte fora desse intervalo são considerados como o ponto final mais próximo.
    • na.rm um valor lógico que indica se os valores de NA devem ser removidos antes que o cálculo continue.
    • argumentos adicionais passados para ou de outros métodos.
  • Valor: Se o corte for zero (o padrão), a média aritmética dos valores em x é calculada, como um vetor numérico ou complexo de comprimento um. […]

Importante: a seção uso descreve os argumentos obrigatórios (apenas x, no caso da função mean()), sendo todos os outros argumentos descritos opcionais. Atente-se aos argumentos obrigatórios e opcionais ao usar uma função.

Infelizmente, a maior parte do conteúdo está escrito em inglês, assim como em outras linguagens de programação. :-(

Você pode traduzir o conteúdo da documentação no tradutor de sua preferência, como fizemos para apresentar a documentação da função mean().

Nós também recomendamos que você busque ajuda no buscador de sua preferência (Google, Bing etc.) e no Stackoverflow, mas estaremos disponíveis no decorrer deste curso para tirar qualquer dúvida que você tiver no processo de análise de dados.

Fig. 4 - Documentação da função mean()

2. Análise exploratória

Nessa primeira aula prática, vamos realizar uma análise exploratória dos discentes matriculados no Bacharelado em Planejamento Territorial (BPT), a partir da amostra dos respondentes da pesquisa Perfil Discente 2019 da PROPLADI/UFABC, com o objetivo de responder às seguintes perguntas:

  1. Qual é a mediana da idade dos discentes matriculados no BPT?
  2. Qual é o CR médio dos discentes matriculados no BPT?
  3. Quais são os três municípios de residência mais comuns entre os discentes matriculados no BPT?
  4. Qual o município de residência mais comum entre os discentes matriculados no BPT que assistiram disciplinas principalmente no turno matutino no último ano?

2.1 Criando um script

Após a instalação do R e RStudio, abra o RStudio. Clique em New file >>> R Script ou aperte os comando Ctrl + Shift + N para criar um novo script, onde vamos salvar a rotina de análise de dados.

Em cada aula prática, vamos salvar a rotina de análise de dados em um novo script, que podemos abrir a qualquer momento para lembrar as funções e objetos que foram usados. É recomendado submeter, junto com o trabalho final, um script que permite a reprodução da sua pesquisa.

Fig. 5 - Como criar um novo script

2.2 Importando os dados

Os dados já foram pré-processados para conter apenas as observações (discentes matriculados no BPT) e variáveis de interesse. O endereço para acessar a base de dados é: https://raw.githubusercontent.com/luisfelipebr/mti/master/dados/dados_bpt1.csv.

O RStudio conta com um botão para auxiliar na importação de dados. Clique em Import Dataset >>> From Text (readr)... para importar a sua primeira base de dados. Em File/URL você pode colocar o endereço web para a transferência e importação da base de dados (desde que você tenha conexão com a internet) ou você pode clicar em Browse para navegar pelo seu diretório até encontrar o arquivo que deseja importar. Uma pré-visualização do arquivo deve aparecer em Data preview, permitindo que você confira se a importação da base de dados deu certo. Import options apresenta algumas opções de importação adicionais que você pode explorar mais tarde.

Adicione o endereço web da nossa base de dados e clique em Update ou faça a transferência do arquivo e indique o caminho clicando no botão Browse.

Veja que alguns caracteres apareceram com erro. Isso aconteceu porque o formato do nosso arquivo não foi reconhecido. É possível arrumar esses caracteres clicando em Locale: Configure.... Em Encoding: selecione Other... e escreva latin1. Clique em OK e em seguida em Configure.

Se você clicar na opção Import, a base de dados será importada. Mas como o nosso objetivo é tornar o código reprodutível, vamos copiar o código que apareceu em Code preview e colar no nosso script.

library(readr)
dados_bpt1 <- read_csv("https://raw.githubusercontent.com/luisfelipebr/mti/master/dados/dados_bpt1.csv", 
                       locale = locale(encoding = "latin1"))
View(dados_bpt1)

Fig. 6 - Importação da base de dados através da interface

Selecione todo o código (3 linhas) e clique em Run ou aperte os comandos Ctrl + Enter para rodar o seu primeiro código. Uma nova janela será aberta, permitindo a visualização da base de dados. Ela foi aberta após a reprodução do código View(dados_bpt1), que abre uma tabela parecida com a do excel para visualização dos dados.

Se tudo deu certo, a sua base de dados está agora listada no Environment: dados_bpt1 com 37 observações e 8 variáveis.

Fig. 7 - Rodando o código

Atenção: Se essa foi a sua primeira vez usando o R no seu computador, pode ser necessário instalar o pacote readr para importar os dados. Isso pode ser feito rodando o código abaixo após copiar e colar no seu script ou console. Um pacote só precisa ser instalado uma vez em cada computador.

install.packages("readr")

2.3. Análise exploratória

Além da função View(), existem diversas outras funções que permitem explorar uma base de dados.

A função head() exibe as primeiras observações da base de dados no Console, sem a necessidade de abrir uma nova aba, e é altamente recomendada para bases de dados grandes (mais de 100.000 observações) que podem travar o programa RStudio quando abertas.

head(dados_bpt1)
## # A tibble: 6 x 8
##      id idade ano_de_ingresso    ca    cr turno  renda        municipio_de_resi~
##   <dbl> <dbl>           <dbl> <dbl> <dbl> <chr>  <chr>        <chr>             
## 1     1    25            2013  2.7   2.6  Matut~ De R$ 5.000~ Ribeirão Pires - ~
## 2     2    22            2015  2.9   2.86 Notur~ De R$ 1.500~ São Bernardo do C~
## 3     3    25            2013  2.7   2.5  Matut~ De R$ 750,0~ São Paulo - SP    
## 4     4    23            2015  3.01  2.91 Notur~ De R$ 3.000~ Mauá - SP         
## 5     5    24            2013  2     1.6  Notur~ De R$ 4.000~ São Paulo - SP    
## 6     6    31            2013  3.2   2.72 Matut~ De R$ 3.000~ São Paulo - SP

A função tail(), de forma similar, exibe as últimas observações da base de dados no Console.

tail(dados_bpt1)
## # A tibble: 6 x 8
##      id idade ano_de_ingresso    ca    cr turno  renda        municipio_de_resi~
##   <dbl> <dbl>           <dbl> <dbl> <dbl> <chr>  <chr>        <chr>             
## 1    32    24            2015  3.5   3.5  Matut~ De R$ 5.000~ São Paulo - SP    
## 2    33    30            2010 NA    NA    Notur~ Até R$ 750,~ São Bernardo do C~
## 3    34    NA            2012 NA    NA    Notur~ De R$ 4.000~ São Bernardo do C~
## 4    35    24            2014  3.5   3.4  Notur~ Acima de R$~ São Paulo - SP    
## 5    36    23            2015  4     3.6  Notur~ De R$ 750,0~ São Paulo - SP    
## 6    37    29            2012  2.43  1.93 Notur~ Até R$ 750,~ São Paulo - SP

A função names() exibe o nome de todas as variáveis da base de dados no Console.

names(dados_bpt1)
## [1] "id"                      "idade"                  
## [3] "ano_de_ingresso"         "ca"                     
## [5] "cr"                      "turno"                  
## [7] "renda"                   "municipio_de_residencia"

A função str() exibe a estrutura da base de dados, com a classe da base de dados (tibble - é um nome para uma base de dados estruturada em formato de tabela), o número de observações e variáveis, o nome de cada variável, a classe de cada variável (se é numérica, lógica, caractére ou outras) e as primeiras observações.

str(dados_bpt1)
## tibble [37 x 8] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ id                     : num [1:37] 1 2 3 4 5 6 7 8 9 10 ...
##  $ idade                  : num [1:37] 25 22 25 23 24 31 32 29 NA 23 ...
##  $ ano_de_ingresso        : num [1:37] 2013 2015 2013 2015 2013 ...
##  $ ca                     : num [1:37] 2.7 2.9 2.7 3.01 2 3.2 NA 2 3 2.7 ...
##  $ cr                     : num [1:37] 2.6 2.86 2.5 2.91 1.6 2.72 NA 2 2.8 2.04 ...
##  $ turno                  : chr [1:37] "Matutino" "Noturno" "Matutino" "Noturno" ...
##  $ renda                  : chr [1:37] "De R$ 5.000,01 a R$ 7.000,00" "De R$ 1.500,01 a R$ 2.250,00" "De R$ 750,01 a R$ 1.500,00" "De R$ 3.000,01 a R$ 4.000,00" ...
##  $ municipio_de_residencia: chr [1:37] "Ribeirão Pires - SP" "São Bernardo do Campo - SP" "São Paulo - SP" "Mauá - SP" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   id = col_double(),
##   ..   idade = col_double(),
##   ..   ano_de_ingresso = col_double(),
##   ..   ca = col_double(),
##   ..   cr = col_double(),
##   ..   turno = col_character(),
##   ..   renda = col_character(),
##   ..   municipio_de_residencia = col_character()
##   .. )

Importante: o operador $ é usado para referir-se a uma variável da base de dados.

A função summary() apresenta um sumário com estatísticas descritivas (mínimo, 1º quartil, mediana, média, 3º quartil, máximo e valores faltantes - NA’s) para todas as variáveis numéricas.

summary(dados_bpt1)
##        id         idade       ano_de_ingresso       ca              cr       
##  Min.   : 1   Min.   :19.00   Min.   :2009    Min.   :2.000   Min.   :1.600  
##  1st Qu.:10   1st Qu.:24.00   1st Qu.:2012    1st Qu.:2.675   1st Qu.:2.475  
##  Median :19   Median :25.00   Median :2013    Median :2.990   Median :2.820  
##  Mean   :19   Mean   :25.71   Mean   :2013    Mean   :2.925   Mean   :2.757  
##  3rd Qu.:28   3rd Qu.:27.50   3rd Qu.:2015    3rd Qu.:3.203   3rd Qu.:3.152  
##  Max.   :37   Max.   :32.00   Max.   :2018    Max.   :4.000   Max.   :3.600  
##               NA's   :2                       NA's   :5       NA's   :5      
##     turno              renda           municipio_de_residencia
##  Length:37          Length:37          Length:37              
##  Class :character   Class :character   Class :character       
##  Mode  :character   Mode  :character   Mode  :character       
##                                                               
##                                                               
##                                                               
## 

No sumário, já temos a resposta para as duas primeiras questões.

Mas essas respostas também podem ser apresentadas de forma mais direta, com o uso de funções específicas para esse fim.

1. Qual é a mediana da idade dos discentes matriculados no BPT?

A mediana pode ser obtida através da função median().

median(dados_bpt1$idade)
## [1] NA

Mas quando digitamos median(dados_bpt1$idade), a resposta é um valor faltante (NA). Isso aconteceu porque, conforme vimos no sumário, existem 2 NA’s na variável idade. Para obter o mesmo resultado do sumário, podemos acrescentar o argumento na.rm = TRUE para remover os valores faltantes do cálculo da mediana.

median(dados_bpt1$idade, na.rm = TRUE)
## [1] 25

Portanto, a mediana da idade dos discentes matriculados no BPT é 25 anos.

2. Qual é o CR médio dos discentes matriculados no BPT?

De forma similar, podemos aplicar a função mean() para obter o CR médio dos discentes matriculados no BPT.

mean(dados_bpt1$cr, na.rm = TRUE)
## [1] 2.7575

O CR médio dos discentes matriculados no BPT é 2,757.

3. Quais são os três municípios de residência mais comuns entre os discentes matriculados no BPT?

Para responder a terceira pergunta, aplicamos a função table() para criar uma tabela de contingência com a contagem dos municípios de residência dos discentes matriculados no BPT.

table(dados_bpt1$municipio_de_residencia)
## 
##                         Guarulhos - SP                              Mauá - SP 
##                                      1                                      1 
## Outro município do Estado de São Paulo                    Ribeirão Pires - SP 
##                                      1                                      3 
##                       Santo André - SP             São Bernardo do Campo - SP 
##                                      8                                      9 
##                         São Paulo - SP 
##                                     14

Os três municípios de residência mais comuns entre os discentes matriculados no BPT são São Paulo, São Bernardo do Campo e Santo André.

4. Qual o município de residência mais comum entre os discentes matriculados no BPT que assistiram disciplinas principalmente no turno matutino no último ano?

Para responder a essa pergunta, usamos a função table() para criar uma tabela de contingência com dois argumentos: município de residência e turno.

table(dados_bpt1$municipio_de_residencia, dados_bpt1$turno)
##                                         
##                                          Matutino Noturno Prefiro não responder
##   Guarulhos - SP                                0       0                     1
##   Mauá - SP                                     0       1                     0
##   Outro município do Estado de São Paulo        0       0                     0
##   Ribeirão Pires - SP                           1       2                     0
##   Santo André - SP                              2       6                     0
##   São Bernardo do Campo - SP                    0       8                     1
##   São Paulo - SP                                5       9                     0
##                                         
##                                          Vespertino
##   Guarulhos - SP                                  0
##   Mauá - SP                                       0
##   Outro município do Estado de São Paulo          1
##   Ribeirão Pires - SP                             0
##   Santo André - SP                                0
##   São Bernardo do Campo - SP                      0
##   São Paulo - SP                                  0

O município de residência mais comum entre os discentes matriculados no BPT que assistiram disciplinas principalmente no matutino é São Paulo.

2.4. Exportando uma base de dados

O R não vai exportar a sua base de dados a menos que você especifique esse comando.

Após rodar a sua rotina de análise de dados, você pode ter feito alterações na base de dados e gostaria de salvá-la como um novo arquivo para acessá-la futuramente. No nosso caso, não fizemos alterações, mas ainda assim vamos exportar a base de dados com o uso da função write_csv().

write_csv(dados_bpt1, path = "D:/OneDrive/@/mti/aula1/dados_bpt1.csv")

Atenção: você precisa alterar o argumento path = para incluir o diretório de trabalho onde deseja salvar o arquivo. dados_bpt1.csv deve ser mantido, pois refere-se ao nome e formato do arquivo que será exportado.

2.5. Salvando o script

Após executar a análise exploratória de dados proposta nessa aula prática o seu script deve estar parecido com esse.

Você pode salvar o seu script clicando no disquete azul ou através do comando Ctrl + S.

É muito importante salvar a rotina de análise de dados, pois isso permite replicá-la sem escrever todo o código novamente.

Fig. 8 - Salvando o script

Importante: todo o conteúdo após o # não será rodado pelo R. Ele é muito usado para adicionar comentários antes de cada linha, para que você e outras pessoas que estão lendo o seu código entendam o que cada linha de código faz ao ser rodada.